1. Field
The following description relates to the execution trace and analysis of a program, and more particularly, to a method and apparatus for dynamically tracing and analyzing a program without substantially affecting the operation of the program at run time.
2. Description of the Related Art
Dynamic analysis of a program is analysis of a program at run time without altering code of the program and substantially affecting the program at run time. A number of methods may be employed to detect errors or performance degradation when a program runs on a system. According to one method of detecting errors or performance gradation of a program at run time, a break instruction is inserted within instructions of a program needing to be traced and a trace program of detecting an operation of an Operating System (OS) resulted from the insertion of the break instruction is executed.
Representative examples of the above methods include a single-stepping in line (SSIL) method, and a single-stepping out of line (SSOL) method. According to the SSIL method, an original instruction is moved from an original location to another location in a system memory before a break instruction is inserted, and then returns to its original position in resuming the execution after exception handling. According to the SSOL method, an original instruction is relocated to a predetermined location of a system other than its original location in inserting a break instruction, and may perform the same operation as in its original location after an execution of the break instruction.
However, in performing dynamic analysis of a program using the SSIL method in an operating system, when the analysis proceeds by inserting a break instruction in a program, errors may occur due to a location that does not allow function entry and return. In addition, in using the SSOL method, when an original instruction is stored in an operating system area, an instruction of a program may be executed at an unexpected area. Further, when an original instruction is copied to another area of a program for execution, an address of the program may need to be replaced.